//package com.zys.asseter.controller.avc;
//
//import com.zys.asseter.domain.dto.AssetFingerprintInfoDTO;
//import com.zys.asseter.domain.pojo.AssetFingerprintInfoEntity;
//import com.zys.asseter.domain.pojo.Result;
//import com.zys.asseter.domain.vo.AssetFingerprintInfoVo;
//import com.zys.asseter.domain.vo.ManufacturerCountVo;
//import com.zys.asseter.domain.vo.TypeTreeVO;
//import com.zys.asseter.mapper.AssetFingerprintInfoMapper;
//import com.zys.asseter.service.AssetFingerprintInfoService;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.ibatis.annotations.Param;
//import org.springframework.beans.BeanUtils;
//import org.springframework.util.StringUtils;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//
//import javax.validation.Valid;
//import java.util.List;
//import java.util.stream.Collectors;
//
//@RestController
//@RequiredArgsConstructor
//@Validated
//@Slf4j
//@RequestMapping("/api/asm/asset")
//public class AssetFingerprintInfoController {
//
//    private final AssetFingerprintInfoService assetFingerprintInfoService;
//
//    private final AssetFingerprintInfoMapper assetFingerprintInfoMapper;
//
//    /**
//     * 从资产信息表插入数据到资产指纹信息表
//     *
//     * @return
//     */
//
//    @PostMapping("/insert/data")
//    public Result getData() {
//        log.info("开始插入数据");
//        assetFingerprintInfoService.insertDataFromAssetInfoToFingerInfo();
//        return Result.success();
//    }
//
//    /**
//     * 根据资产名称和资产子类型查询指纹名称
//     * @param assetType
//     * @param assetSubType
//     * @return
//     */
//    @GetMapping("/select/fingerName")
//    public Result<List<String>> selectFingerName(
//            @RequestParam("assetType") String assetType,
//            @RequestParam("assetSubType") String assetSubType
//    ){
//        List<String> strings = assetFingerprintInfoService.selectFingerName(assetType, assetSubType);
//        return  Result.success(strings);
//
//    }
//
//    /**
//     * 根据指纹名称删除指纹信息
//     * @param fingerName
//     * @return
//     */
//
//    @PostMapping("/delete/fingerInfo")
//    public Result deleteFingerInfo(@RequestParam("fingerName") String fingerName) {
//        assetFingerprintInfoService.deleteByName(fingerName);
//        return Result.success();
//    }
//
//
//    /**
//     * 新增指纹信息
//     * @param fingerprintInfoDTO
//     * @return
//     */
//    @PostMapping("/insert/fingerInfo")
//    public Result addAssetFingerprintInfo(@Valid @RequestBody AssetFingerprintInfoDTO fingerprintInfoDTO) {
//        assetFingerprintInfoService.addFingerInfo(fingerprintInfoDTO);
//        return Result.success();
//    }
//
//    /**
//     * 资产表新增一条数据的时候判断对应的指纹在指纹表中是否存在
//     */
//    @GetMapping("/select/fingerCode")
//    public Result judgeFingerInfo(@RequestParam String code) {
//        Integer i = assetFingerprintInfoService.judgeFingerInfo(code);
//        return Result.success(i);
//    }
//
//    /**
//     * 根据厂商查询指纹名称
//     * @param manufacturer
//     * @return
//     */
//    @GetMapping("/select/byManufacturer")
//    public Result<List<String>> selectByManufacturer(@RequestParam String manufacturer) {
//        List<String> strings = assetFingerprintInfoService.selectByManufacturer(manufacturer);
//        return Result.success(strings);
//    }
//
//    /**
//     * 查询所有厂商和对应资产表中的资产数量
//     */
//    @GetMapping("/select/manufacturer")
//    public Result<List<ManufacturerCountVo>> selectManufacturer() {
//        List<String> manufacturers = assetFingerprintInfoService.selectManufacturer();
//        List<ManufacturerCountVo> manufacturerCounts = manufacturers.stream().map(manufacturer -> {
//            String manufacturerCode = assetFingerprintInfoMapper.selectManufacturerCode(manufacturer);
//            long count = assetFingerprintInfoMapper.countByManufacturer(manufacturerCode);
//            ManufacturerCountVo mv = new ManufacturerCountVo();
//            mv.setManufacturer(manufacturer);
//            mv.setNum(count);
//            return mv;
//        }).collect(Collectors.toList());
//        return Result.success(manufacturerCounts);
//    }
//
//    /**
//     * 查询所有指纹
//     */
//    @GetMapping("/select/all/fingerName")
//    public Result<List<String>> selectAllFingerName() {
//        List<String> strings = assetFingerprintInfoService.selectAllFingerName();
//        return Result.success(strings);
//    }
//
//    /**
//     * 获取大类分类构建树形结构
//     * @return
//     */
//    @GetMapping("/typeTree")
//    public Result getTypeTree() {
//        log.info("开始获取指纹类型树");
//        List<TypeTreeVO> typeTree = assetFingerprintInfoService.getTypeTree();
//        return Result.success(typeTree);
//    }
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//    /**
//     * 删除指纹信息
//     * @param name
//     * @return
//     */
//    @PostMapping("/delete")
//    public Result deleteAssetFingerprintInfo(@Param("name") String name) {
//        log.info("delete fingerprint name:{}", name);
//        if (StringUtils.isEmpty(name)) {
//            return Result.error("名字不可以为空");
//        }
//        assetFingerprintInfoService.deleteByName(name);
//        return Result.success();
//    }
//
//    /**
//     * 修改指纹信息
//     * @param entity
//     * @return
//     */
//    @PostMapping("/update")
//    public Result updateAssetFingerprintInfo(@RequestBody AssetFingerprintInfoEntity entity) {
//        assetFingerprintInfoService.updateFinergerprintInfo(entity);
//        return Result.success();
//    }
//
//    /**
//     * 根据指纹名称查询指纹信息
//     * @param name
//     * @return
//     */
//    @GetMapping("/getFingerprintInfo")
//    public Result<List<AssetFingerprintInfoVo>> getAssetFingerprintInfo(@Param("name") String name) {
//        log.info("开始获取指纹信息");
//        if (StringUtils.isEmpty(name)) {
//            return Result.error("名字不可以为空");
//        }
//        List<AssetFingerprintInfoEntity> entity = assetFingerprintInfoService.getByName(name);
//        List<AssetFingerprintInfoVo> collect = entity.stream().map(item -> {
//            AssetFingerprintInfoVo vo = new AssetFingerprintInfoVo();
//            BeanUtils.copyProperties(item, vo);
//            return vo;
//        }).collect(Collectors.toList());
//
//        Integer i = assetFingerprintInfoService.countDistinctFingerName(name);
//        for (AssetFingerprintInfoVo assetFingerprintInfoVo : collect) {
//            assetFingerprintInfoVo.setCount(i);
//        }
//        return Result.success(collect);
//    }
//
//
//
//
//
//
//
//
//    /**
//     * 获取所有指纹名称
//     * @return
//     */
//    @GetMapping("/all/fingername")
//    public Result<List<String>> getAllFingerName() {
//        List<String> allFingerName = assetFingerprintInfoService.getAllFingerName();
//        return Result.success(allFingerName);
//    }
//    /**
//     * 获取所有厂商
//     * @return
//     */
//
//    @GetMapping("/all/manufacturer")
//    public Result<List<String>> getAllManufacturer() {
//        List<String> allManufacturer = assetFingerprintInfoService.getAllManufacturer();
//        return Result.success(allManufacturer);
//    }
//}
